home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa -
- load the C socket.h defines and structure manipulators
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use Socket;
-
- $proto = getprotobyname('udp');
- socket(Socket_Handle, PF_INET, SOCK_DGRAM, $proto);
- $iaddr = gethostbyname('hishost.com');
- $port = getservbyname('time', 'udp');
- $sin = sockaddr_in($port, $iaddr);
- send(Socket_Handle, 0, 0, $sin);
-
- $proto = getprotobyname('tcp');
- socket(Socket_Handle, PF_INET, SOCK_STREAM, $proto);
- $port = getservbyname('smtp', 'tcp');
- $sin = sockaddr_in($port,inet_aton("127.1"));
- $sin = sockaddr_in(7,inet_aton("localhost"));
- $sin = sockaddr_in(7,INADDR_LOOPBACK);
- connect(Socket_Handle,$sin);
-
- ($port, $iaddr) = sockaddr_in(getpeername(Socket_Handle));
- $peer_host = gethostbyaddr($iaddr, AF_INET);
- $peer_addr = inet_ntoa($iaddr);
-
- $proto = getprotobyname('tcp');
- socket(Socket_Handle, PF_UNIX, SOCK_STREAM, $proto);
- unlink('/tmp/usock');
- $sun = sockaddr_un('/tmp/usock');
- connect(Socket_Handle,$sun);
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This module is just a translation of the C _s_o_c_k_e_t._h file.
- Unlike the old mechanism of requiring a translated _s_o_c_k_e_t._p_h
- file, this uses the hhhh2222xxxxssss program (see the Perl source
- distribution) and your native C compiler. This means that
- it has a far more likely chance of getting the numbers
- right. This includes all of the commonly used pound-defines
- like AF_INET, SOCK_STREAM, etc.
-
- Also, some common socket "newline" constants are provided:
- the constants CR, LF, and CRLF, as well as $CR, $LF, and
- $CRLF, which map to \015, \012, and \015\012. If you do not
- want to use the literal characters in your programs, then
- use the constants provided here. They are not exported by
- default, but can be imported individually, and with the
- :crlf export tag:
-
- use Socket qw(:DEFAULT :crlf);
-
-
-
-
- Page 1 (printed 10/23/98)
-
-
-
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- In addition, some structure manipulation functions are
- available:
-
- inet_aton HOSTNAME
- Takes a string giving the name of a host, and
- translates that to the 4-byte string (structure). Takes
- arguments of both the 'rtfm.mit.edu' type and
- '18.181.0.24'. If the host name cannot be resolved,
- returns undef. For multi-homed hosts (hosts with more
- than one address), the first address found is returned.
-
- inet_ntoa IP_ADDRESS
- Takes a four byte ip address (as returned by
- _i_n_e_t__a_t_o_n()) and translates it into a string of the
- form 'd.d.d.d' where the 'd's are numbers less than 256
- (the normal readable four dotted number notation for
- internet addresses).
-
- INADDR_ANY
- Note: does not return a number, but a packed string.
-
- Returns the 4-byte wildcard ip address which specifies
- any of the hosts ip addresses. (A particular machine
- can have more than one ip address, each address
- corresponding to a particular network interface. This
- wildcard address allows you to bind to all of them
- simultaneously.) Normally equivalent to
- _i_n_e_t__a_t_o_n('0.0.0.0').
-
- INADDR_BROADCAST
- Note: does not return a number, but a packed string.
-
- Returns the 4-byte 'this-lan' ip broadcast address.
- This can be useful for some protocols to solicit
- information from all servers on the same LAN cable.
- Normally equivalent to _i_n_e_t__a_t_o_n('255.255.255.255').
-
- INADDR_LOOPBACK
- Note - does not return a number.
-
- Returns the 4-byte loopback address. Normally
- equivalent to _i_n_e_t__a_t_o_n('localhost').
-
- INADDR_NONE
- Note - does not return a number.
-
- Returns the 4-byte 'invalid' ip address. Normally
- equivalent to _i_n_e_t__a_t_o_n('255.255.255.255').
-
- sockaddr_in PORT, ADDRESS
-
-
-
-
-
- Page 2 (printed 10/23/98)
-
-
-
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- sockaddr_in SOCKADDR_IN
- In an array context, unpacks its SOCKADDR_IN argument
- and returns an array consisting of (PORT, ADDRESS). In
- a scalar context, packs its (PORT, ADDRESS) arguments
- as a SOCKADDR_IN and returns it. If this is confusing,
- use _p_a_c_k__s_o_c_k_a_d_d_r__i_n() and _u_n_p_a_c_k__s_o_c_k_a_d_d_r__i_n()
- explicitly.
-
- pack_sockaddr_in PORT, IP_ADDRESS
- Takes two arguments, a port number and a 4 byte
- IP_ADDRESS (as returned by _i_n_e_t__a_t_o_n()). Returns the
- sockaddr_in structure with those arguments packed in
- with AF_INET filled in. For internet domain sockets,
- this structure is normally what you need for the
- arguments in _b_i_n_d(), _c_o_n_n_e_c_t(), and _s_e_n_d(), and is also
- returned by _g_e_t_p_e_e_r_n_a_m_e(), _g_e_t_s_o_c_k_n_a_m_e() and _r_e_c_v().
-
- unpack_sockaddr_in SOCKADDR_IN
- Takes a sockaddr_in structure (as returned by
- _p_a_c_k__s_o_c_k_a_d_d_r__i_n()) and returns an array of two
- elements: the port and the 4-byte ip-address. Will
- croak if the structure does not have AF_INET in the
- right place.
-
- sockaddr_un PATHNAME
-
- sockaddr_un SOCKADDR_UN
- In an array context, unpacks its SOCKADDR_UN argument
- and returns an array consisting of (PATHNAME). In a
- scalar context, packs its PATHNAME arguments as a
- SOCKADDR_UN and returns it. If this is confusing, use
- _p_a_c_k__s_o_c_k_a_d_d_r__u_n() and _u_n_p_a_c_k__s_o_c_k_a_d_d_r__u_n() explicitly.
- These are only supported if your system has <_s_y_s/_u_n._h>.
-
- pack_sockaddr_un PATH
- Takes one argument, a pathname. Returns the sockaddr_un
- structure with that path packed in with AF_UNIX filled
- in. For unix domain sockets, this structure is normally
- what you need for the arguments in _b_i_n_d(), _c_o_n_n_e_c_t(),
- and _s_e_n_d(), and is also returned by _g_e_t_p_e_e_r_n_a_m_e(),
- _g_e_t_s_o_c_k_n_a_m_e() and _r_e_c_v().
-
- unpack_sockaddr_un SOCKADDR_UN
- Takes a sockaddr_un structure (as returned by
- _p_a_c_k__s_o_c_k_a_d_d_r__u_n()) and returns the pathname. Will
- croak if the structure does not have AF_UNIX in the
- right place.
-
-
-
-
-
-
-
-
- Page 3 (printed 10/23/98)
-
-
-
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 4 (printed 10/23/98)
-
-
-
-
-
-
-